/**
 * @file hello.cpp
 * @author tangjf (ryontang@163.com)
 * @brief hj21简单密码破解
 * @version 0.1
 * @date 2020-09-01
 * 
 * 主要思路：
 * 1. 写出转换数组成功了一半
 * 
 * @copyright Copyright (c) 2020
 * 
 */

#include <iostream>

using namespace std;
string Password_Transformation(string str)
{
  // 字典法：考虑两个字典，一个是明文字典 a[]，另一个是明文对应的加密字典 b[]
  // 然后采用字典元素对应的方法，做加密或解密，实现方法为通过明文字典匹配找到字符的索引，再到通过索引去加密字典中找到对应的字符
  char a[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"}; // 明文字典
  char b[] = {"bcdefghijklmnopqrstuvwxyza222333444555666777788899990123456789"}; // 加密字典

  int len = str.size();

  for (int i = 0; i < len; i++)
  {
    //小写字母转数字
    if ((str[i] >= 'a') && (str[i] <= 'z'))
    {
      str[i] = b[str[i] - 'a' + 26]; // str[i]-'a'表示的是与‘a’的ascii码之差，即与‘a’的距离， 为啥要加26，是因为在a[]中‘a’前面有26个大写字母
                                     // 为了得到str[i]在a[]中的索引位置，故这样计算
    }

    //大写字母转小写
    if ((str[i] >= 'A') && (str[i] <= 'Z'))
    {
      str[i] = b[str[i] - 'A'];
    }

    //数字不用转换，保持原样
  }
  return str;
}

// 主函数
int main()
{
  string str;
  while (getline(cin, str))
  {
    // 调用破解函数
  }
  return 0;
}
